//特征
export const feature: any = [
  '乌木',
  '琥珀',
  '古铜',
  '赤霞',
  '栗色',
  '金棕',
  '玛瑙',
  '烟霞',
  '流金',
  '丝绒',
  '釉光',
  '松烟',
  '炭影',
  '斑驳',
  '暮色',
  '醇香',
  '木韵',
  '皮革',
  '可可',
  '咖啡',
  '蜜甜',
  '坚果',
  '泥土',
  '豆蔻',
  '肉桂',
  '焦糖',
  '雪松',
  '陈年',
  '胡椒',
  '花香',
  '云杉',
  '幽兰',
  '古巴云',
  '洪都拉',
  '尼加拉',
  '康州叶',
  '帕塔加',
  '蒙特山',
  '乌普曼',
  '大卫尊',
  '埃斯特',
  '比亚达',
];
//身份
export const identity: any = [
  '绅士',
  '公爵',
  '伯爵',
  '骑士',
  '老爷',
  '掌柜',
  '先生',
  '爵士',
  '领主',
  '船长',
  '旅人',
  '隐士',
  '哲人',
  '匠人',
  '藏家',
  '鉴赏家',
  '老饕',
  '顽主',
  '沉思者',
  '独行者',
  '守望者',
  '漫步者',
  '夜归人',
  '闲散人',
  '逍遥客',
  '烟霞客',
  '时光客',
  '不眠人',
  '怀旧者',
  '品味家',
];
//场景
export const sence: any = [
  '余烬',
  '星火',
  '灰域',
  '迷雾',
  '夜曲',
  '晨光',
  '暮色',
  '书斋',
  '穹顶',
  '长廊',
  '露台',
  '船舱',
  '密室',
  '庭院',
  '雪夜',
  '雨巷',
  '剪影',
  '点燃',
  '吞吐',
  '缭绕',
  '凝视',
  '把玩',
  '珍藏',
  '寻觅',
  '等待',
  '回味',
  '沉醉',
  '启程',
  '停泊',
  '沉思',
  '时光里',
  '记忆中',
  '光影间',
  '云雾端',
  '味蕾上',
  '心境外',
  '悠然间',
  '静谧处',
];
/**
 * 从三组数据中各随机选取一个元素并拼接
 * @param {Array} group1 第一组数据
 * @param {Array} group2 第二组数据
 * @param {Array} group3 第三组数据
 * @param {string} [separator=' '] 拼接分隔符，默认为空
 * @returns {string} 拼接后的字符串
 */
export const getRandomCombination = (
  group1,
  group2,
  group3,
  separator = ''
) => {
  // 从数组中随机选择元素的辅助函数
  const getRandomItem = (arr) => {
    if (!arr || arr.length === 0) return '';
    const randomIndex = Math.floor(Math.random() * arr.length);
    return arr[randomIndex];
  };

  // 从每组数据中获取随机元素
  const item1 = getRandomItem(group1);
  const item2 = getRandomItem(group2);
  const item3 = getRandomItem(group3);

  // 使用分隔符拼接结果
  return [item1 + item2 + item3].join(separator);
};

//将字符串转为数组
export const convertToArray = (str: string) => {
  if (!str) return [];

  const s = String(str).trim();

  // 1) 先尝试标准 JSON 解析
  try {
    const parsed = JSON.parse(s);
    if (Array.isArray(parsed)) return parsed;
    if (typeof parsed === 'string') return [parsed];
  } catch {
    // 继续走容错分支
  }

  // 2) 处理形如 [http...] 或 [http...,http2...] 的"伪 JSON"
  if (s.startsWith('[') && s.endsWith(']')) {
    const inner = s.slice(1, -1).trim();

    // 2.1 检查是否包含多个 URL（通过匹配 ",http" 或 ", http" 模式）
    //  修复：使用更精准的分隔符检测，避免误判 URL 参数中的逗号
    const hasMultipleUrls = /,\s*https?:\/\//i.test(inner);

    if (hasMultipleUrls) {
      // 按 ",http" 分割（保留 http）
      const urls: string[] = [];
      const parts = inner.split(/,\s*(?=https?:\/\/)/i);

      for (const part of parts) {
        const cleaned = part.trim().replace(/^["'](.*)["']$/, '$1');
        if (/^https?:\/\//i.test(cleaned)) {
          urls.push(cleaned);
        }
      }

      if (urls.length > 0) return urls;
    }

    // 2.2 单个 URL（没有多个 URL 的分隔符）
    const cleaned = inner.trim().replace(/^["'](.*)["']$/, '$1');
    if (/^https?:\/\//i.test(cleaned)) {
      return [cleaned];
    }

    // 2.3 复杂情况：尝试用正则提取所有 URL（作为兜底）
    //  修复正则：允许 URL 中包含方括号等特殊字符
    const urls: string[] = [];
    const re = /(https?:\/\/[^\s,"']+(?:\[[^\]]*\])?[^\s,"']*)/gi;
    let m: RegExpExecArray | null;
    while ((m = re.exec(inner))) {
      const url = m[1].replace(/^["'](.*)["']$/, '$1').trim();
      if (url) urls.push(url);
    }
    if (urls.length) return urls;
  }

  // 3) 直接是一个 URL 字符串
  if (/^https?:\/\//i.test(s)) {
    return [s];
  }

  // 4) 实在不行，返回空数组
  return [];
};
